#include "ResultArray.h"
#include "NumericSignal.h"

namespace Entities {

INIT_FACTORY(ResultArray)

ResultArray::ResultArray():Array<SmartPtr<Result>>(){
}

ResultArray::ResultArray(int _nbData):Array<SmartPtr<Result>>(_nbData){}

ResultArray::ResultArray(Array<SmartPtr<Result>> & data):Array<SmartPtr<Result>>(data){}

void ResultArray::addAll(const ResultArray & obj, int start){
	Array<SmartPtr<Result>>::addAll(obj, start);
}

void ResultArray::addAll(const ResultArray & obj){
	Array<SmartPtr<Result>>::addAll(obj);
}

void ResultArray::add(const SmartPtr<Result> & _data, int i){
	Array<SmartPtr<Result>>::add(_data, i);
}

void ResultArray::add(const SmartPtr<Result> & _data){
	Array<SmartPtr<Result>>::add(_data);
}

void ResultArray::removeAll(int start, int size){
	Array<SmartPtr<Result>>::removeAll(start, size);
}

void ResultArray::removeAll(int start){
	Array<SmartPtr<Result>>::removeAll(start);
}

void ResultArray::remove(int i){
	Array<SmartPtr<Result>>::remove(i);
}

void ResultArray::clear(){
	Array<SmartPtr<Result>>::clear();
}

Cloneable * ResultArray::clone(){
	Array<SmartPtr<Result>> _array(Array<SmartPtr<Result>>::size());
	for (int i=0; i < Array<SmartPtr<Result>>::size(); i++){
		_array.at(i) = dynamic_cast<Result*>(Array<SmartPtr<Result>>::at(i).clone());
	}
	return new ResultArray(_array);
}

ObjectInputStream & ResultArray::load(ObjectInputStream & iis){
	Array<SmartPtr<Result>>::load(iis);
	return iis;
}

ObjectOutputStream & ResultArray::save(ObjectOutputStream & oos) const{
	Array<SmartPtr<Result>>::save(oos);
	return oos;
}

SignalArray ResultArray::toSignalArray(){
	SignalArray signaux;

	for (int i=0; i<size(); i++){
		SmartPtr<NumericSignal> sig = at(i).toSignal();
		signaux.add(sig);
	}
	return signaux;
}

}